<script>
  //   给定一个 正整数 num ，编写一个函数，如果 num 是一个完全平方数，则返回 true ，否则返回 false 。

  //   进阶：不要 使用任何内置的库函数，如  sqrt 。

  //   来源：力扣（LeetCode）
  //   链接：https://leetcode.cn/problems/valid-perfect-square

  /**
   * @param {number} num
   * @return {boolean}
   */
  var isPerfectSquare = function (num) {
    if (num === 0) return true;
    let left = 1,
      right = num;
    // 首先分一次 降低循环次数
    right = (num >> 1) + 1;
    while (left <= right) {
      let mid = (left + right) >> 1;
      if (mid * mid == num) {
        return true;
      } else if (mid * mid < num) {
        left = mid + 1;
      } else {
        right = mid - 1;
      }
    }
    return false;
  };
</script>
